home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / mischards.lha / SourceCode / Mandelbrot.s < prev    next >
Text File  |  1980-02-20  |  8KB  |  503 lines

  1.     Opt    c-
  2.     Section    "MandleBrotty Code",Code_c
  3.  
  4.     IncDir    Df0:
  5.  
  6. Start    Movem.l    d0-d7/a0-a6,-(sp) 
  7.     Bsr    KillSys      
  8.     
  9.     Lea    CopperList(pc),a0 
  10.     Lea    HardWare,a6      
  11.     Move.l    a0,Cop1Lc(a6)      
  12.     Move.w    #$83c0,DMACon(a6)
  13.     
  14.     Lea    $60000,a0
  15.     Lea    $70000,a1
  16. Clear    Move.l    #0,(a0)+
  17.     Cmp.l    a0,a1
  18.     Bne    Clear
  19.     
  20.     Bsr    DoMandle
  21.  
  22. Loop    Btst    #6,$Bfe001      
  23.     Bne    Loop      
  24.         
  25.     Bsr    ReturnSys      
  26.     Movem.l    (sp)+,d0-d7/a0-a6 
  27.     Moveq    #0,d0      
  28.     Rts
  29.  
  30. DoMandle    Lea    YPos(pc),a6
  31.     Move.w    #0,(a6)
  32.     Move.l    Screen(pc),a4
  33.     Add.l    #$2800,a4
  34.     Move.l    a4,a1
  35.     Add.l    #$2800,a4
  36.     Move.l    a4,a2
  37.     Add.l    #$2800,a4
  38.     Move.l    a4,a3
  39.     Add.l    #$2800,a4
  40.     Move.l    Screen(pc),a0
  41.     Lea    YVal(pc),a6
  42.     Move.w    #0,(a6)    
  43.     Sub.l    a6,a6
  44.     
  45. DoVert    Sub.l    a5,a5
  46.     Move.l    a6,d7
  47.     Lea    XVal(pc),a6
  48.     Move.w    #0,(a6)
  49.     Move.l    d7,a6
  50.  
  51. DoHoriz    Move.l    a6,d7
  52.     Move.w    XVal(pc),d1
  53.     Move.w    YVal(pc),d0
  54.     Move.l    d7,a6
  55.     Sub.l    MandV1(pc),d1
  56.     Sub.l    MandV2(pc),d0
  57.     Move.w    MandV3(pc),d7
  58.     Move.l    d0,d4
  59.     Move.l    d1,d5
  60.     Move.w    d0,d2
  61.     Muls.w    d2,d2
  62.     Move.w    d1,d3
  63.     Muls.w    d3,d3
  64.     
  65. FindColour    Sub.l    d3,d2
  66.     Asr.l    #8,d2
  67.     Add.w    d4,d2
  68.     Move.w    d1,d3
  69.     Muls.w    d0,d3
  70.     Asr.l    #7,d3
  71.     Add.w    d5,d3
  72.     Move.w    d2,d0
  73.     Move.w    d3,d1
  74.     Muls.w    d2,d2
  75.     Muls.w    d3,d3
  76.     Move.l    d2,d6
  77.     Add.l    d3,d6
  78.     Cmpi.l    #$40000,d6
  79.     Bhi.s    GotPixCol
  80.     Dbf    d7,FindColour
  81.     
  82. GotPixCol    Move.l    a5,d2
  83.     Move.w    d2,d3
  84.     Not.w    d3
  85.     Lsr.w    #3,d2
  86.     Add.w    a6,d2
  87.     Add.w    d7,d7
  88.     Add.w    Jumptab+2(pc,d7.w),d7
  89.     Jmp    Jumptab+2(pc,d7.w)
  90.  
  91. Jumptab    Incbin    SysData/MandleJump.Dat
  92.  
  93.     Bra    DonePixel
  94.     Bset    d3,0(a0,d2.w)
  95.     Bra    DonePixel
  96.     Bset    d3,0(a1,d2.w)
  97.     Bra    DonePixel
  98.     Bset    d3,0(a0,d2.w)
  99.     Bset    d3,0(a1,d2.w)
  100.     Bra    DonePixel
  101.     Bset    d3,0(a2,d2.w)
  102.     Bra    DonePixel
  103.     Bset    d3,0(a0,d2.w)
  104.     Bset    d3,0(a2,d2.w)
  105.     Bra    DonePixel
  106.     Bset    d3,0(a1,d2.w)
  107.     Bset    d3,0(a2,d2.w)
  108.     Bra    DonePixel
  109.     Bset    d3,0(a0,d2.w)
  110.     Bset    d3,0(a1,d2.w)
  111.     Bset    d3,0(a2,d2.w)
  112.     Bra    DonePixel
  113.     Bset    d3,0(a3,d2.w)
  114.     Bra    DonePixel
  115.     Bset    d3,0(a0,d2.w)
  116.     Bset    d3,0(a3,d2.w)
  117.     Bra    DonePixel
  118.     Bset    d3,0(a1,d2.w)
  119.     Bset    d3,0(a3,d2.w)
  120.     Bra    DonePixel
  121.     Bset    d3,0(a0,d2.w)
  122.     Bset    d3,0(a1,d2.w)
  123.     Bset    d3,0(a3,d2.w)
  124.     Bra    DonePixel
  125.     Bset    d3,0(a2,d2.w)
  126.     Bset    d3,0(a3,d2.w)
  127.     Bra    DonePixel
  128.     Bset    d3,0(a0,d2.w)
  129.     Bset    d3,0(a2,d2.w)
  130.     Bset    d3,0(a3,d2.w)
  131.     Bra    DonePixel
  132.     Bset    d3,0(a1,d2.w)
  133.     Bset    d3,0(a2,d2.w)
  134.     Bset    d3,0(a3,d2.w)
  135.     Bra    DonePixel
  136.     Bset    d3,0(a0,d2.w)
  137.     Bset    d3,0(a1,d2.w)
  138.     Bset    d3,0(a2,d2.w)
  139.     Bset    d3,0(a3,d2.w)
  140.     Bra    DonePixel
  141.     Bset    d3,0(a4,d2.w)
  142.     Bra    DonePixel
  143.     Bset    d3,0(a0,d2.w)
  144.     Bset    d3,0(a4,d2.w)
  145.     Bra    DonePixel
  146.     Bset    d3,0(a1,d2.w)
  147.     Bset    d3,0(a4,d2.w)
  148.     Bra    DonePixel
  149.     Bset    d3,0(a0,d2.w)
  150.     Bset    d3,0(a1,d2.w)
  151.     Bset    d3,0(a4,d2.w)
  152.     Bra    DonePixel
  153.     Bset    d3,0(a2,d2.w)
  154.     Bset    d3,0(a4,d2.w)
  155.     Bra    DonePixel
  156.     Bset    d3,0(a0,d2.w)
  157.     Bset    d3,0(a2,d2.w)
  158.     Bset    d3,0(a4,d2.w)
  159.     Bra    DonePixel
  160.     Bset    d3,0(a1,d2.w)
  161.     Bset    d3,0(a2,d2.w)
  162.     Bset    d3,0(a4,d2.w)
  163.     Bra    DonePixel
  164.     Bset    d3,0(a0,d2.w)
  165.     Bset    d3,0(a1,d2.w)
  166.     Bset    d3,0(a2,d2.w)
  167.     Bset    d3,0(a4,d2.w)
  168.     Bra    DonePixel
  169.     Bset    d3,0(a3,d2.w)
  170.     Bset    d3,0(a4,d2.w)
  171.     Bra    DonePixel
  172.     Bset    d3,0(a0,d2.w)
  173.     Bset    d3,0(a3,d2.w)
  174.     Bset    d3,0(a4,d2.w)
  175.     Bra    DonePixel
  176.     Bset    d3,0(a1,d2.w)
  177.     Bset    d3,0(a3,d2.w)
  178.     Bset    d3,0(a4,d2.w)
  179.     Bra    DonePixel
  180.     Bset    d3,0(a0,d2.w)
  181.     Bset    d3,0(a1,d2.w)
  182.     Bset    d3,0(a3,d2.w)
  183.     Bset    d3,0(a4,d2.w)
  184.     Bra    DonePixel
  185.     Bset    d3,0(a2,d2.w)
  186.     Bset    d3,0(a3,d2.w)
  187.     Bset    d3,0(a4,d2.w)
  188.     Bra    DonePixel
  189.     Bset    d3,0(a0,d2.w)
  190.     Bset    d3,0(a2,d2.w)
  191.     Bset    d3,0(a3,d2.w)
  192.     Bset    d3,0(a4,d2.w)
  193.     Bra    DonePixel
  194.     Bset    d3,0(a1,d2.w)
  195.     Bset    d3,0(a2,d2.w)
  196.     Bset    d3,0(a3,d2.w)
  197.     Bset    d3,0(a4,d2.w)
  198.     Bra    DonePixel
  199.     Bset    d3,0(a0,d2.w)
  200.     Bset    d3,0(a1,d2.w)
  201.     Bset    d3,0(a2,d2.w)
  202.     Bset    d3,0(a3,d2.w)
  203.     Bset    d3,0(a4,d2.w)
  204.  
  205. DonePixel    Btst    #6,$Bfe001
  206.     Beq.s    QuitMand
  207.     Addq.w    #1,a5
  208.     Move.l    a6,d7
  209.     Lea    XVal(pc),a6    
  210.     Addi.w    #2,(a6)
  211.     Move.l    d7,a6
  212.     Cmpa.w    #320,a5
  213.     Bne    DoHoriz
  214.     Move.l    a6,d7
  215.     Lea    YVal(pc),a6    
  216.     Addi.w    #2,(a6)
  217.     Move.l    d7,a6
  218.     Adda.w    #40,a6
  219.     
  220.     Move.l    a6,-(sp)
  221.     Lea    YPos(pc),a6
  222.     Add.w    #1,(a6)
  223.     Cmp.w    #256,(a6)
  224.     Beq    QuitM
  225.     Move.l    (sp)+,a6
  226.     Bra    DoVert
  227.  
  228. QuitM    Move.l    (sp)+,a6
  229. QuitMand    Rts       
  230.  
  231. KillSys    Bsr.s    SysWait    
  232.  
  233.     Move.l    $4,a6    
  234.     Lea    GFXName(pc),a1    
  235.     Moveq    #0,d0    
  236.     Jsr    -552(a6)    
  237.         
  238.     Lea    OldCop1(pc),a5
  239.     Move.l    $26(a0),$0(a5)    
  240.     Move.l    $32(a0),$4(a5)    
  241.     
  242.     Lea    HardWare,a6
  243.     Move.w    IntEnaR(a6),d0    
  244.     Move.w    DMAConR(a6),d1  
  245.     Or.w    #$8000,d0    
  246.     And.w    #$03ff,d1    
  247.     Or.w    #$8000,d1    
  248.     Move.w    d0,$8(a5)    
  249.     Move.w    d1,$a(a5)    
  250.     
  251.     Move.w    #$7fff,IntEna(a6) 
  252.     Move.w    #$7fff,DMACon(a6) 
  253.     Rts
  254.  
  255. SysWait    Move.w    #15,d7    
  256. SysWaitLoop    Move.l    #$05000,d1    
  257.     Bsr.s    WaitVBL    
  258.     Bsr.s    DoWaitVBL    
  259.     Dbf    d7,SysWaitLoop    
  260.     Rts
  261.  
  262. DoWaitVBL    Move.l    #$03000,d1    
  263. WaitVBL    Movem.l    d0-d1/a6,-(sp)    
  264.     Lea    HardWare,a6    
  265. WaitVBLLoop    Move.l    VPosR(a6),d0    
  266.     And.l    #$1ff00,d0    
  267.     Cmp.l    d1,d0    
  268.     Bne.s    WaitVBLLoop    
  269.     Movem.l    (sp)+,d0-d1/a6    
  270.     Rts        
  271.  
  272. ReturnSys    Lea    HardWare,a6    
  273.     Move.w    OldIntEna(pc),IntEna(a6)
  274.     Move.w    OldDMACon(pc),DMACon(a6)
  275.     Move.l    OldCop1(pc),Cop1lc(a6)
  276.     Move.l    OldCop2(pc),Cop2lc(a6)
  277.     Rts
  278.  
  279. GFXName    Dc.b    "graphics.library",0
  280.     Even
  281. OldCop1    Dc.l    0    
  282. OldCop2    Dc.l    0    
  283. OldIntEna    Dc.w    0    
  284. OldDmaCon    Dc.w    0    
  285.  
  286. XVal    Dc.w    0
  287. YVal    Dc.w    0
  288.  
  289. YPos    Dc.w    0
  290.  
  291. MandV1    Dc.l    260
  292. MandV2    Dc.l    410
  293. MandV3    Dc.w    30
  294.  
  295. Screen    Dc.l    $60000
  296.  
  297. Cmv    Macro
  298.     Dc.w    \2,\1
  299.     EndM
  300.     
  301. Cwt    Macro
  302.     Dc.w    (\1*$100)+$01,$fffe
  303.     EndM    
  304.  
  305. Pal    Macro
  306.     Dc.w    $ffe1,$fffe
  307.     EndM    
  308.  
  309. EndCop    Macro
  310.     Dc.w    $ffff,$fffe
  311.     EndM    
  312.  
  313. CopperList    Cwt    $15    
  314.     Cmv    $0200,BplCon0    
  315.     Cmv    $00bb,BplCon1    
  316.     Cmv    $000a,BplCon2    
  317.     Cmv    $0034,DdfStrt    
  318.     Cmv    $00c8,DdfStop    
  319.     Cmv    $1681,DiwStrt    
  320.     Cmv    $36c1,DiwStop
  321.     Cmv    $0,BplMod1    
  322.     Cmv    $0,BplMod2    
  323.     
  324.     Cwt    $16
  325.     Cmv    $0000,Color00
  326.     Cmv    $0111,Color01
  327.     Cmv    $0222,Color02
  328.     Cmv    $0333,Color03
  329.     Cmv    $0444,Color04
  330.     Cmv    $0555,Color05
  331.     Cmv    $0666,Color06
  332.     Cmv    $0777,Color07
  333.     Cmv    $0888,Color08
  334.     Cmv    $0999,Color09
  335.     Cmv    $0aaa,Color10
  336.     Cmv    $0bbb,Color11
  337.     Cmv    $0ccc,Color12
  338.     Cmv    $0ddd,Color13
  339.     Cmv    $0eee,Color14
  340.     Cmv    $0fff,Color15
  341.     Cmv    $0fff,Color16
  342.     Cmv    $0fef,Color17
  343.     Cmv    $0fdf,Color18
  344.     Cmv    $0fcf,Color19
  345.     Cmv    $0fbf,Color20
  346.     Cmv    $0faf,Color21
  347.     Cmv    $0f9f,Color22
  348.     Cmv    $0f8f,Color23
  349.     Cmv    $0f7f,Color24
  350.     Cmv    $0f6f,Color25
  351.     Cmv    $0f5f,Color26
  352.     Cmv    $0f4f,Color27
  353.     Cmv    $0f3f,Color28
  354.     Cmv    $0f2f,Color29
  355.     Cmv    $0f1f,Color30
  356.     Cmv    $0f0f,Color31
  357.     
  358.     Cwt    $25
  359. CopperBPLS    Cmv    $06,BplPt0h    
  360.     Cmv    $0000,BplPt0l    
  361.     Cmv    $06,BplPt1h    
  362.     Cmv    $2800,BplPt1l    
  363.     Cmv    $06,BplPt2h    
  364.     Cmv    $5000,BplPt2l    
  365.     Cmv    $06,BplPt3h    
  366.     Cmv    $7800,BplPt3l    
  367.     Cmv    $06,BplPt4h
  368.     Cmv    $a000,BplPt4l 
  369.     
  370.     Cwt    $28    
  371.     Cmv    $5200,BplCon0    
  372.     
  373.     Pal
  374.     Cwt    $28    
  375.     Cmv    $0200,BplCon0
  376.                     
  377.     EndCop
  378.  
  379. ****Custom Chip Registers****
  380.  
  381. Hardware    = $Dff000
  382.  
  383. ;Control Registers
  384.  
  385. Dmaconr    = $002
  386. Vposr    = $004
  387. Vhposr    = $006
  388. Joy0dat    = $00A
  389. Joy1dat    = $00C
  390. Clxdat    = $00E
  391. Intenar    = $01C
  392. Intereqr    = $01E
  393. Copcon    = $02E
  394.  
  395. ;Blitter Registers
  396.  
  397. Bltcon0    = $040
  398. Bltcon1    = $042
  399. Bltafwm    = $044
  400. Bltalwm    = $046
  401. Bltcpth    = $048
  402. Bltcptl    = $04A
  403. Bltbpth    = $04C
  404. Bltbptl    = $04E
  405. Bltapth    = $050
  406. Bltaptl    = $052
  407. Bltdpth    = $054
  408. Bltdptl    = $056
  409. Bltsize    = $058
  410. Bltcmod    = $060
  411. Bltbmod    = $062
  412. Bltamod    = $064
  413. Bltdmod    = $066
  414. Bltcdat    = $070
  415. Bltbdat    = $072
  416. Bltadat    = $074
  417.  
  418. ;Copper Registers
  419.  
  420. Cop1lc    = $080
  421. Cop1lch    = $080
  422. Cop1lcl    = $082
  423. Cop2lc    = $084
  424. Cop2lch    = $084
  425. Cop2lcl    = $086
  426. Copjmp1    = $088
  427. Copjmp2    = $08A
  428. Diwstrt    = $08E
  429. Diwstop    = $090
  430. Ddfstrt    = $092
  431. Ddfstop    = $094
  432. Dmacon    = $096
  433. Clxcon    = $098
  434. Intena    = $09A
  435. Intreq    = $09C
  436.  
  437. ;BitPlane Registers 
  438.  
  439. BplCon0    = $100
  440. BplCon1    = $102
  441. BplCon2    = $104
  442. BplMod1    = $108
  443. BplMod2    = $10a
  444.  
  445. BplPt0h    = $0e0
  446. BplPt0l    = $0e2
  447. BplPt1h    = $0e4
  448. BplPt1l    = $0e6
  449. BplPt2h    = $0e8
  450. BplPt2l    = $0ea
  451. BplPt3h    = $0ec
  452. BplPt3l    = $0ee
  453. BplPt4h    = $0f0
  454. BplPt4l    = $0f2
  455. BplPt5h    = $0f4
  456. BplPt5l    = $0f6
  457.  
  458. ;Colour Registers
  459.  
  460. Color00    = $180
  461. Color01    = $182
  462. Color02    = $184
  463. Color03    = $186
  464. Color04    = $188
  465. Color05    = $18a
  466. Color06    = $18c
  467. Color07    = $18e
  468. Color08    = $190
  469. Color09    = $192
  470. Color10    = $194
  471. Color11    = $196
  472. Color12    = $198
  473. Color13     = $19a
  474. Color14     = $19c
  475. Color15     = $19e
  476. Color16     = $1a0
  477. Color17     = $1a2
  478. Color18     = $1a4
  479. Color19     = $1a6
  480. Color20     = $1a8
  481. Color21     = $1aa
  482. Color22     = $1ac
  483. Color23     = $1ae
  484. Color24     = $1b0
  485. Color25     = $1b2
  486. Color26     = $1b4
  487. Color27     = $1b6
  488. Color28     = $1b8
  489. Color29     = $1ba
  490. Color30     = $1bc
  491. Color31     = $1be
  492.  
  493. EcsNop    = $1fe
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.